﻿Imports Microsoft.Office.Interop.Excel

''' <summary>
''' Gestionnaire d'Excel
''' </summary>
''' <remarks></remarks>
Public Interface IGestionExcel

    ''' <summary>
    ''' Peremt de récupérer le Range actif (et de gérer, donc, les fonctionnalités non englobées)
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function GetActiveRange() As Range

    ''' <summary>
    ''' Permet de paramétrer l'implémentation à utiliser pour la représentation des tableaux
    ''' </summary>
    ''' <param name="implTableau">Objet implémentant l'interface IImplTableau</param>
    ''' <remarks></remarks>
    Sub setImplTableau(ByVal implTableau As IImplTableau)

    ''' <summary>
    ''' Ajoute un nouveau classeur à la liste des classeurs de l'application. La feuille active est renommée.
    ''' </summary>
    ''' <param name="NouveauNomFeuille">Nom attribué à la feuille active</param>
    ''' <returns>Renvoie True si l'opération s'est bien déroulée, False sinon</returns>
    ''' <remarks>Le nouveau classeur devient le classeur actif</remarks>
    Function CreerNouveauFichier(ByVal NouveauNomFeuille As String) As Boolean

    ''' <summary>
    ''' Enregistre le classeur actif en le renommant éventuellement
    ''' </summary>
    ''' <param name="NomFichier">Nom du fichier</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function EnregistrerSous(ByVal NomFichier As String) As Boolean

    ''' <summary>
    ''' Enregistre le classeur actif au format XML
    ''' </summary>
    ''' <param name="NomFichier">Nom du fichier</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function EnregistrerSousFeuilleCalculXML(ByVal NomFichier As String) As Boolean

    ''' <summary>
    ''' Ouvre un fichier xls existant et l'ajoute à la liste des classeurs. Ce classeur devient le classeur actif
    ''' </summary>
    ''' <param name="NomFichier">Nom du fichier</param>
    ''' <param name="NomFeuille">Nom de la feuille active</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function OuvrirFichierExistant(ByVal NomFichier As String, ByVal NomFeuille As String) As Boolean

    ''' <summary>
    ''' Enregistre le classeur actif sans le renommer
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function Sauver() As Boolean

    ''' <summary>
    ''' Ferme le classeur actif
    ''' </summary>
    ''' <remarks></remarks>
    Sub FermerWoorkBook()

    ''' <summary>
    ''' Ferme tous les classeurs. Les objets de la classes sont purgés
    ''' </summary>
    ''' <remarks></remarks>
    Sub QuitterXl()

    ''' <summary>
    ''' Ecrit à la ligne NumeroLigne les chaines de caractère de LigneAEcrire en partant de la colonne 1
    ''' </summary>
    ''' <param name="LigneAEcrire"></param>
    ''' <param name="NumeroLigne"></param>
    ''' <remarks></remarks>
    Sub EcrireLigne(ByVal LigneAEcrire As String(), ByVal NumeroLigne As Integer)

    ''' <summary>
    ''' Ecrit à la ligne NumeroLigne les éléments de LigneAEcrire en partant de la colonne 1
    ''' </summary>
    ''' <param name="LigneAEcrire">Liste des objets à afficher à la ligne NumeroLigne</param>
    ''' <param name="NumeroLigne">Numéro de la ligne à laquelle afficher les éléments</param>
    ''' <remarks>La méthode toString des objets de LigneAEcrire est utilisée pour l'affichage</remarks>
    Sub EcrireLigne(ByVal LigneAEcrire As Object(), ByVal NumeroLigne As Integer)

    ''' <summary>
    ''' Affecte une valeur à une cellule du classeur actif
    ''' </summary>
    ''' <param name="Valeur">Valeur à affecter</param>
    ''' <param name="A1">Adresse de la cellule au format A1</param>
    ''' <remarks></remarks>
    Sub EcrireCellule(ByVal Valeur As Object, ByVal A1 As String)

    ''' <summary>
    ''' Affecte une valeur à une cellule du classeur actif
    ''' </summary>
    ''' <param name="Valeur">Valeur à affecter</param>
    ''' <param name="NumeroLigne">Numéro de la ligne de la cellule à modifier</param>
    ''' <param name="NumeroColonne">Numéro de la colonne de la cellule à modifier</param>
    ''' <remarks></remarks>
    Sub EcrireCellule(ByVal Valeur As Object, ByVal NumeroLigne As Integer, ByVal NumeroColonne As Integer)

    ''' <summary>
    ''' Affecte un tableau de valeurs à la plage de cellules active
    ''' </summary>
    ''' <remarks></remarks>
    Sub EcrireTableau(ByVal Valeurs As Object(,))

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="AdresseA1"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function LireCellule(ByVal AdresseA1 As String) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="AdresseL1C1"></param>
    ''' <param name="NumeroLigne"></param>
    ''' <param name="NumeroColonne"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function LireCellule(ByVal AdresseL1C1 As String, ByRef NumeroLigne As Integer, ByRef NumeroColonne As Integer) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="NumeroLigne"></param>
    ''' <param name="NumeroColonne"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function LireCellule(ByVal NumeroLigne As Integer, ByVal NumeroColonne As Integer) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="nomFeuille"></param>
    ''' <remarks></remarks>
    Sub CreerNouvelleFeuille(ByVal nomFeuille As String)

    ''' <summary>
    ''' Changer de feuille active au sein du classeur actif en renommant la feuille à activer
    ''' </summary>
    ''' <param name="NumeroFeuille">Numéro de la feuille à activer dans la liste des feuilles du classeur actif</param>
    ''' <param name="NouveauNom">Nouveau nom à attribuer à la feuille à activer</param>
    ''' <returns>Renvoie True si l'opération s'est déroulée correctement, False sinon</returns>
    ''' <remarks></remarks>
    Function ChangerDeFeuilleActive(ByVal NumeroFeuille As Integer, ByVal NouveauNom As String) As Boolean

    ''' <summary>
    ''' Changer de feuille active au sein du classeur actif
    ''' </summary>
    ''' <param name="NomFeuille">Nom de la feuille à activer</param>
    ''' <returns>Renvoie True si l'opération s'est déroulée correctement, False sinon</returns>
    ''' <remarks></remarks>
    Function ChangerDeFeuilleActive(ByVal NomFeuille As String) As Boolean

    ''' <summary>
    ''' Changer de feuille active au sein du classeur actif
    ''' </summary>
    ''' <param name="NumeroFeuille">Numéro de la feuille à activer dans la liste des feuilles du classeur actif</param>
    ''' <returns>Renvoie True si l'opération s'est déroulée correctement, False sinon</returns>
    ''' <remarks></remarks>
    Function ChangerDeFeuilleActive(ByVal NumeroFeuille As Integer) As Boolean

    ''' <summary>
    ''' Sélectionner une plage de cellules de la feuille active à partir de l'adresse de ses cellules supérieure gauche et inférieure droite au format A1
    ''' </summary>
    ''' <param name="CellTypA1">Adresse de la cellule supérieure gauche de la plage à sélectionner</param>
    ''' <param name="CellTypB2">Adresse de la cellule inférieure droite de la plage à sélectionner</param>
    ''' <remarks></remarks>
    Sub SelectionRange(ByVal CellTypA1 As String, ByVal CellTypB2 As String)

    ''' <summary>
    ''' Sélectionne une plage de cellules de la feuille active
    ''' </summary>
    ''' <param name="ligneHautGauche">N° de la ligne de la cellule supérieure gauche</param>
    ''' <param name="colonneHautGauche">N° de la colonne de la cellule supérieure gauche</param>
    ''' <param name="lignebasDroite">N° ligne de la cellule inférieure droite</param>
    ''' <param name="colonneBasDroite">N° de la colonne de la cellule inférieure droite</param>
    ''' <remarks></remarks>
    Sub selectionRange(ByVal ligneHautGauche As Integer, _
                       ByVal colonneHautGauche As Integer, _
                       ByVal lignebasDroite As Integer, _
                       ByVal colonneBasDroite As Integer)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="Colonne"></param>
    ''' <remarks></remarks>
    Sub SelectionColonne(ByVal Colonne As String)

    ''' <summary>
    ''' Sélectionner une colonne
    ''' </summary>
    ''' <param name="numColonne">index de la colonne</param>
    ''' <remarks></remarks>
    Sub SelectionColonne(ByVal numColonne As Integer)

    ''' <summary>
    ''' Sélectionner une ligne
    ''' </summary>
    ''' <param name="Ligne">index de la  ligne</param>
    ''' <remarks></remarks>
    Sub SelectionLigne(ByVal Ligne As Integer)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="numLigne"></param>
    ''' <param name="hauteur"></param>
    ''' <remarks></remarks>
    Sub HauteurLigne(ByVal numLigne As Integer, ByVal hauteur As Integer)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="numColonne"></param>
    ''' <param name="largeur"></param>
    ''' <remarks></remarks>
    Sub LargeurColonne(ByVal numColonne As Integer, ByVal largeur As Integer)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="b"></param>
    ''' <remarks></remarks>
    Sub AfficherGridLines(ByVal b As Boolean)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="c"></param>
    ''' <remarks></remarks>
    Sub ColorieRange(ByVal c As System.Drawing.Color)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="c"></param>
    ''' <remarks></remarks>
    Sub ChangeCouleurTexteRange(ByVal c As System.Drawing.Color)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="L1C1"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function AdresseCellTypeA1(ByVal L1C1 As String) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="L1C1"></param>
    ''' <param name="Ligne"></param>
    ''' <param name="Colonne"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function AdresseCellTypeA1(ByVal L1C1 As String, ByRef Ligne As Integer, ByRef Colonne As Integer) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="Ligne"></param>
    ''' <param name="Colonne"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function AdresseCellTypeA1(ByVal Ligne As Integer, ByVal Colonne As Integer) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="A1"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function AdresseCellL1C1(ByVal A1 As String) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="A1"></param>
    ''' <param name="NumeroLigne"></param>
    ''' <param name="NumeroColonne"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function AdresseCellL1C1(ByVal A1 As String, ByRef NumeroLigne As Integer, ByRef NumeroColonne As Integer) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="Encadrement"></param>
    ''' <remarks></remarks>
    Sub EncradrementRange(ByVal Encadrement As TypeEncadrement)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="NomFeuilleDonnees"></param>
    ''' <param name="CellHautGauche"></param>
    ''' <param name="NbreLignes"></param>
    ''' <param name="NbreColonnes"></param>
    ''' <param name="Titre"></param>
    ''' <param name="CellSerie"></param>
    ''' <param name="NomFeuille"></param>
    ''' <remarks></remarks>
    Sub CreerGraphique(ByVal NomFeuilleDonnees As String, ByVal CellHautGauche As String, ByVal NbreLignes As Integer, ByVal NbreColonnes As Integer, ByVal Titre As String, ByVal CellSerie As String, _
                       ByVal NomFeuille As String)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="Nom"></param>
    ''' <param name="NomFeuilleDonnee"></param>
    ''' <param name="CelluleHautX"></param>
    ''' <param name="CelluleBasX"></param>
    ''' <param name="CelluleHautY"></param>
    ''' <param name="CelluleBasY"></param>
    ''' <remarks></remarks>
    Sub AjouterCourbe(ByVal Nom As String, ByVal NomFeuilleDonnee As String, ByVal CelluleHautX As String, ByVal CelluleBasX As String, ByVal CelluleHautY As String, ByVal CelluleBasY As String)

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="TexteATrouver"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function Chercher(ByVal TexteATrouver As String) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="TexteATrouver"></param>
    ''' <param name="Contenu"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function Chercher(ByVal TexteATrouver As String, ByRef Contenu As String) As String

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Function ProtegerFeuille() As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="MotDePasse"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function ProtegerFeuille(ByVal MotDePasse As String) As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function OterProtectionFeuille() As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="MotDePasse"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function OterProtectionFeuille(ByVal MotDePasse As String) As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="Structure"></param>
    ''' <param name="Fenetres"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function ProtegerClasseur(ByVal [Structure] As Boolean, ByVal Fenetres As Boolean) As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="MotDePasse"></param>
    ''' <param name="Structure"></param>
    ''' <param name="Fenetres"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function ProtegerClasseur(ByVal MotDePasse As String, ByVal [Structure] As Boolean, ByVal Fenetres As Boolean) As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function OterProtectionClasseur() As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="MotDePasse"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function OterProtectionClasseur(ByVal MotDePasse As String) As Boolean

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="titre"></param>
    ''' <param name="tab"></param>
    ''' <param name="numeroLigneHautGauche"></param>
    ''' <param name="numeroColonneHautGauche"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function creerTableau(ByVal titre As String, _
                          ByVal tab As System.Data.DataTable, _
                          ByVal numeroLigneHautGauche As Integer, _
                          ByVal numeroColonneHautGauche As Integer) As Boolean

End Interface


